home *** CD-ROM | disk | FTP | other *** search
Text File | 1991-04-29 | 3.1 KB | 74 lines | [TEXT/MPS ] |
- • Bug: "int a,// comment \n b;" has the "b" flush left.
- • Bug: "int a[] = {1,2,3,4};" has the "1,2,3,4};" on a newline
- • Bug: "x = !x;" is displayed as "x =! x;". Problem in "!"
- • Add comment glue for Sussna
- • Add glue for #lines. Check if needline(2) is required.
- • Add commands in comments
-
-
-
- • Bug: "if (xxx)){" --> "if (xxx){"
- √ Ignored: 04/29/91
-
- This situation is syntactically invalid. It arises when the Pascal to C
- conversion script is run. Although it munches tokens instead of yielding
- an error, it will remain as it is more useful than harmful.
-
-
-
- • Bug: "void (Target::*aMethod)(int)" --> "void(Target ::*aMethod)(int)"
- √ Fixed: 04/29/91
-
- The "::*" case is now handled by the PrsId class, which already handles the
- "::" case.
-
-
-
- • Bug: "Rect a, b;" has extra blank after the ","
- √ Fixed: 04/25/91
-
- The declaration had to be in the body of a function. The bug was caused
- by an interaction between the parser and the formatter. The parse would
- enter a declaration parse state after the ", " was displayed by doing an
- Accept(&gLexDecl). The parser would sing and dance while consuming this
- parse-effect-only token. Part of the song and dance was to call
- Formatting::Display() on this magic cookie. Nothing would be displayed,
- but the formatter would remember that it had just been asked to display
- something with identifier nature. When the "b" came along, the glue had
- a conditional: if the previous thing was a an id, then emit a
- space ("?i{s}{}"). So, one space came from the glue for "," and the other
- from the glue for names.
-
- The fix (the second one, far cleaner than the first), was to have the
- Syntactic::Display() abstract method return a Boolean. The method returns
- true if something was displayed, false if nothing was displayed. Then
- Formatting::Display() would update its information about what was last
- displayed only if anything was displayed.
-
-
-
- • Bug: "ObjectTable::IObjectTable(very long declaration list which rescans…)"
- √ Fixed: 04/25/91
-
- The bug occurred when the line length overflowed and rescanning was invoked.
- The output would have "ObjectTableIObjectTableObjectTable::IObjectTable" as
- the name of the method. The reason was because "ObjectTable::IObjectTable"
- was saved twice. It was saved once as a synthesized kSPrs_Id, which would
- be redisplayed, and each of its components would be saved. When rerun, the
- two would be re-emitted with the bogus results appearing.
-
- The fix was part of the previous fix: when Formatting::Display() calls a
- Syntactic::Display() method, the token is saved for replay only if the
- token was actually displayed. Otherwise, it is ignored. The synthesized
- kSPrs_Id always displays its component objects, which are saved in the
- replay buffer, but then returns false, causing the synthesized object to
- not be remembered. This leaves the desired effect.
-
- A potential problem is if a false-returning synthesized object's Display()
- method does something other than specify glue or call its component's
- Display() methods: those other operations will not be replayed. The
- current set of synthesized objects does not suffer from this problem.
-
-
-
-